package main.java.BLT;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;

public class Jugador {
	private String nombre;
	private Rol rol;
	private Mazo ordenesDeBatalla;
	private Mazo mazoDeTecnologia;
	private Mazo bajas;
	private Mazo reserva;
	private Lider lider;
	private Mazo reservaEnJuego;
	private boolean booleanSeleccionaBonusPrimeroLider;
	private Integer batallasGanadas;
	private Tactica tactica;
	
	public Jugador() throws IOException{
		nombre="";
		ordenesDeBatalla = new Mazo("src/main/resources/tactica.txt","Tactica");
		mazoDeTecnologia = new Mazo("src/main/resources/especial.txt","Especial");
		bajas = new Mazo();
		reserva = new Mazo("src/main/resources/ejercito.txt","Ejercito");
		reservaEnJuego = new Mazo();
		lider = null;
		booleanSeleccionaBonusPrimeroLider = false;
		batallasGanadas = 0;
		rol = null;
		tactica = null;;
	}
	
	public Jugador(String nombre) throws IOException{
		this.nombre=nombre;
		ordenesDeBatalla = new Mazo("src/main/resources/tactica.txt","Tactica");
		mazoDeTecnologia = new Mazo("src/main/resources/especial.txt","Especial");
		bajas = new Mazo();
		reserva = new Mazo("src/main/resources/ejercito.txt","Ejercito");
		reservaEnJuego = new Mazo();
		lider = null;
		booleanSeleccionaBonusPrimeroLider = false;
		batallasGanadas = 0;
		rol = null;
		tactica = null;
	}

	public Rol getRol() {
		return rol;
	}

	public void setRol(Rol rol) {
		this.rol = rol;
	}

	public Mazo getOrdenesDeBatalla() {
		return ordenesDeBatalla;
	}
	

	public Mazo getMazoDeTecnologia() {
		return mazoDeTecnologia;
	}
	
	public Mazo getBajas() {
		return bajas;
	}

	public Mazo getReserva() {
		return reserva;
	}


	public Lider getLider() {
		return lider;
	}

	public void setLider(Lider lider) {
		this.lider = lider;
	}


	public Mazo getReservaEnJuego() {
		return reservaEnJuego;
	}

	public String getNombre() {
		return nombre;
	}

	public boolean isBooleanSeleccionaBonusPrimeroLider() {
		return booleanSeleccionaBonusPrimeroLider;
	}

	public void setBooleanSeleccionaBonusPrimeroLider(boolean booleanSeleccionaBonusPrimeroLider) {
		this.booleanSeleccionaBonusPrimeroLider = booleanSeleccionaBonusPrimeroLider;
	}

	public Integer getBatallasGanadas() {
		return batallasGanadas;
	}

	public void setBatallasGanadas(Integer batallasGanadas) {
		this.batallasGanadas = batallasGanadas;
	}

	public Tactica getTactica() {
		return tactica;
	}

	public void setTactica(Tactica tactica) {
		this.tactica = tactica;
	}
	
	// el jugador decide un mazo de ejercito 
	
	public static ArrayList<Carta> seleccionaMazo(ArrayList<Carta> opcionesIniciales, int numOpcionesAElegir) {
		
		ArrayList<Carta> opcionesElegidas = new ArrayList<Carta>();
		
		if (opcionesIniciales.size() < numOpcionesAElegir){
			System.out.println("Ha perdido todas las cartas de ejercito en juego.\n" );
			opcionesElegidas.addAll(opcionesIniciales);
			opcionesIniciales.clear();
			
		}else{
			while (numOpcionesAElegir > 0 && !opcionesIniciales.isEmpty()) {
				Carta elegida = seleccionaCarta(opcionesIniciales);
				opcionesElegidas.add(elegida);
				opcionesIniciales.remove(elegida);		
				numOpcionesAElegir--;
			}
		}

		return opcionesElegidas;
	}
	
		
	//elegir una carta ejercito dentro de las disponibles por el jugador
	public static Carta seleccionaCarta(ArrayList<Carta> arrayList) {
		
		int indice=1;
		Iterator<Carta> ita = arrayList.iterator();
		while (ita.hasNext()) {
			Carta c = ita.next();
			System.out.println(indice + ")" + c.toString());
			indice++;
		}
		
		int seleccion = -1;
			while (seleccion == -1) {
				try {
					System.out.print("Seleccione una carta: ");
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					String linea = br.readLine();
					seleccion = Integer.parseInt(linea);
					if (seleccion > arrayList.size() || seleccion <= 0)
						seleccion = -1;
				} catch (Exception e) {
				}
			}	
		ita = arrayList.iterator();
		Carta carta =  ita.next();
		while (seleccion > 1) {
			carta = ita.next();
			seleccion--;
		}
		
		return carta;
	}
		
}
	
	
	



